package br.com.projeto.model.persistencia;

import javax.persistence.EntityManager;

import br.com.projeto.model.entities.Arquivo;
import br.com.projeto.model.entities.Atividade;
import br.com.projeto.model.entities.Fase;
import br.com.projeto.model.entities.Historico;
import br.com.projeto.model.entities.Mensagem;

public class HistoricoDecorator {

	@SuppressWarnings("unchecked")
	public static Historico decorate(Historico historico, EntityManager context) {

		Object ref = context.find(historico.getReferencia().getReferencia(),
				historico.getInstancia());

		switch (historico.getReferencia()) {
		case ATIVIDADE:
			Atividade atividade = (Atividade) ref; 
			//http://localhost:8080/project/atividades/1
			historico.incluirInformacoes(atividade.getTitulo(), "/atividades/"+ atividade.getId(), atividade.getAutor().getNomeReduzido());
			break;
		case MENSAGEM:
			Mensagem mensagem = (Mensagem) ref;
			historico.incluirInformacoes(mensagem.getTitulo(), "/mensagens/"+ mensagem.getId(), "");
			break;
		case ARQUIVO:
			Arquivo arquivo = (Arquivo) ref;
			historico.incluirInformacoes(arquivo.getNome(), "/arquivos/"+ arquivo.getId(), "");
			break;
		case FASE:
			Fase fase = (Fase) ref;
			historico.incluirInformacoes(fase.getTitulo(), "/fases/"+ fase.getId(), fase.getUsuario().getNomeReduzido());
			break;
		default:
			break;
		}
		return historico;
	}
}
